經過正規化的資料庫常常會有多個表格(table),例如文章的表格裡只有作者id,要查作者資料就要拿作者id到用戶表格裡找。
articles
id | title | user_id |
---|
1|article1|1|
2|article2|1|
3|article3|Null|
4|article4|3|
5|article5|2|
users
id | user_name | birth |
---|
1|Amy|1990-03-03|
2|Ban|1999-01-01|
3|Cathy|1899-11-12|
4|Dave|2012-11-11|
5|Ele|1989-12-29|
為了要查找位於另一個表格內的資料,就需要用到Join,將兩個表格合併(咦!?)
Inner
Left
Right
Full
分別表示交集、差集、連集。
以上面文章、作者表格為例。Inner就是如果兩邊有Null或找不到對應筆資料就會略過,如下文章表格裡Null那筆資料就不會被記。
Left的話就是以左邊表格為主,即使左邊表格有NULL一樣會列出,只是那一欄也不會有右邊表格的資料。Right就是相反,以右邊表格為主。
Left
Right
Full的話聰明的大家應該知道結果,只是mysql沒有Full這個選項,所以就不放圖了。
SELECT*
,先決定要Join哪兩個表格和Join的種類(join type),SELECT <t1.column1>,<t2.column2>
FROM <table1> AS t1
<join_type> JOIN <table2> AS t2
ON t1.<column> = t2.<column>
[condition]
最後可以把組合起來的新表格用view存起來,方便下次查找,不要再重打落落長的Join sql。
CREATE VIEW <view_name> AS
SELECT <t1.column1>,<t2.column2>
FROM <table1> AS t1
<type> JOIN <table2> AS t2
ON t1.<column> = t2.<column>
[condition]
查找的話就是這樣
SELECT * FROM <view_name>;